This invention relates generally to collaborative application programs and, more particularly, to managing shared objects in a collaborative framework.
A collaboration system is a system that facilitates communication between multiple application collaborator programs (xe2x80x9cprogramsxe2x80x9d) stored on one or more computers. The programs share information through the system to accomplish a specified task during a xe2x80x9csessionxe2x80x9d. For example, a stock market trading program may cooperate with a database program to retrieve and store the name and value of a stock on a selected day. After locating and retrieving the stock name and daily value via a network (e.g., the Internet), the stock market trading program may transmit a stock market program output (xe2x80x9coutputxe2x80x9d) with the latter information to the collaboration system. The system then broadcasts the output to all computers having programs using the system. These computers may be terminals that are remote from a server on which the collaboration system runs. Once the output from the framework is received by the database program, it is converted into a compatible form and then stored in a database. The collaboration system in this example therefore provides the mechanism for receiving the output from the stock market trading program and directing the output to the database program. The collaboration system also may include a graphical user interface for facilitating operation by a user. In the above example, a session may be considered as beginning when the stock market trading program first locates the daily stock value and continuing until both programs in the session stop executing. Only programs which join an active session can exchange information and there may be several sessions concurrently active in the collaboration system.
Some existing collaboration systems also include an additional database file associated with a separate database program for maintaining a single repository for all changes made to the data. This additional database file (called a xe2x80x9cstatexe2x80x9d database) appears as an additional collaborator and the associated program receives all changes made to the data from the collaboration system. The associated program applies all received changes to the data so that the database file is current. The additional database facilitates the addition of a new collaborator program to the session after the session begins. When such a new program enters a session after the session has started, it first obtains a copy of the state database so that it begins operation with a current copy of the data. For example, assume that a new program for displaying the current value of a stock enters the exemplary stock market session. Such new program first must determine the current value of a stock before it can display the value. To do this, the new program first locates the current value information from the state database, and then displays the value on a display device.
Although this solution may be effective in some instances, it requires additional overhead for obtaining, maintaining, and storing the state database. In addition, state databases require use of memory, which, at times, is limited. Moreover, all changes generated by any of the collaborator programs must be transmitted to the state database. This additional transmission can slow the speed of the session and congest the network. These problems are exacerbated when a large number of collaborator programs utilize the collaboration system during a single session.
Accordingly, it would be desirable to have a collaboration system that facilitates the addition of new programs to a running session after the beginning of the session.
In accordance with one aspect of the invention, a collaborative session is represented by a session object which receives all messages generated by the programs and transmits the messages to all programs participating in the session. The session object can include shared objects which are managed by the session and can be updated without requiring messages to be transmitted over a network. Accordingly, programs may enter a session after it begins and immediately access common session information, such as a state database.
In particular, the session object is created from session class code that is part of a collaborative framework. The session class code includes code for creating and managing one or more shared objects. A shared object may be created in the session object address space during a session in which programs are active. The shared object may be destroyed when the session is completed. Since the shared object shares the session object address space it can access the session object services directly without requiring a context switch or a network access. Further it is possible to add generic life cycle services such as check-out, check-in, store, retrieve, etc. to the shared objects.